package co.com.travelsoft.ati.administrador.interfaz;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;

import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.xml.parsers.SAXParserFactory;

//import co.com.travelsoft.ati.controller.EventosDelegate;
import co.com.travelsoft.ati.entities.Eventos;

public class GUIAdministrador extends JFrame implements ActionListener{
		
    private JMenuBar jmbMenu = null;   
    private JMenu jmnUsuarios = null;
    private JMenu jmnEventos = null;
    private JMenu jmnAyuda = null;    
    private JMenuItem jmiEliminarUsuario = null;
    private JMenuItem jmiCargarEventosXML = null;
    private JMenuItem jmiNuevoEvento = null;
    private JMenuItem jmiConsultaEvento = null;
    //private JMenuItem jmiModificarEvento = null;
    private JMenuItem jmiEliminarEvento = null; 
    
    private JComponent jcComponenteActual;
    
    public GUIAdministrador()
	{
		super("ADMINISTRADOR TRAVELSOFT - ANTALTI");
		
		cargarMenu();
		iniciarFrame();		
	}
	
	private void iniciarFrame()
	{		
		WindowListener wL = new WindowAdapter ()
        {
    		public void windowClosing(WindowEvent e)
            {
    			dispose();
    			System.exit( 0 );
            }
        };
        
        
        this.addWindowListener(wL);        
        //this.setLayout(null);        
        setLayout(new BorderLayout());
        jcComponenteActual = new JPanel();
        this.add(jcComponenteActual);
        
        
	  	Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
	    setSize(800,600);
	    setLocation((screenSize.width - this.getWidth())/2,(screenSize.height - this.getHeight())/2);
	    setResizable(false);
		setVisible(true);
	}
	
	private void cargarMenu()
	{
		jmbMenu = new JMenuBar();
		jmnUsuarios = new JMenu("Usuarios");
		jmiEliminarUsuario = new JMenuItem("Eliminar Usuario");
		jmiEliminarUsuario.addActionListener(this);
		jmnUsuarios.add(jmiEliminarUsuario);
		
		jmbMenu.add(jmnUsuarios);
		
		jmnEventos = new JMenu("Eventos");
		jmiCargarEventosXML = new JMenuItem("Cargar Eventos (XML)");
		jmiCargarEventosXML.addActionListener(this);
		jmiNuevoEvento = new JMenuItem("Registrar Nuevo Evento");
		jmiNuevoEvento.addActionListener(this);
		jmiConsultaEvento = new JMenuItem("Consultar Evento");
		jmiConsultaEvento.addActionListener(this);
		//jmiModificarEvento = new JMenuItem("Modificar Evento");
		//jmiModificarEvento.addActionListener(this);
		jmiEliminarEvento = new JMenuItem("Eliminar Evento");
		jmiEliminarEvento.addActionListener(this);
		jmnEventos.add(jmiCargarEventosXML);
		jmnEventos.add(jmiNuevoEvento);
		jmnEventos.add(jmiConsultaEvento);
		//jmnEventos.add(jmiModificarEvento);
		jmnEventos.add(jmiEliminarEvento);
		
		jmbMenu.add(jmnEventos);
		
		jmnAyuda = new JMenu("Ayuda");
		jmnAyuda.addActionListener(this);
		jmbMenu.add(jmnAyuda);
		
		this.setJMenuBar(jmbMenu);		
		
	}
	
	private void setPanelVista ( JPanel panel )
	{
		this.remove(jcComponenteActual);
		jcComponenteActual= panel;
		this.add(jcComponenteActual);
		jcComponenteActual.setBounds(0, 0, 775, 530);
	}
	
	private void cargarPanelRegistrarNuevoEvento() throws Exception
	{
		PanelRegistrarEventos registroEventoVista = new PanelRegistrarEventos(this);
		JPanel panel = new JPanel(new FlowLayout());
		panel.add(registroEventoVista);
		setPanelVista(panel);
		//pre.setBounds(10, 10, 775, 530);
		registroEventoVista.setPreferredSize(new Dimension(775, 150));
		panel.setPreferredSize(new Dimension(775, 530));
		pack();
	}
	
	private void cargarPanelEliminarUsuario() throws Exception
	{
		PanelEliminarUsuario delUsr = new PanelEliminarUsuario(this);
		setPanelVista(delUsr);
		//delUsr.setBounds(10, 10, 775, 530);
	}
	
	private void cargarPanelCargarEventosXML() throws Exception
	{
		PanelCargarEventosXML evXML = new PanelCargarEventosXML(this);
		setPanelVista(evXML);
		//delUsr.setBounds(10, 10, 775, 530);
	}

	private void cargarPanelEliminarEvento() throws Exception
	{
		PanelEliminarEvento delUsr = new PanelEliminarEvento(this);
		setPanelVista(delUsr);
		//delUsr.setBounds(10, 10, 775, 530);
	}
	private void cargarPanelConsultarEvento() throws Exception
	{
		PanelConsultaEventos consultaEventoVista = new PanelConsultaEventos(this);
		//PanelConsultaEventos consultaEventoVista = new PanelConsultaEventos(this);
		//setLayout(new BorderLayout());
		setPanelVista(consultaEventoVista);
		//consultaEventoView.setBounds(10, 10, 775, 530);
		consultaEventoVista.setPreferredSize(new Dimension(775, 530));
		pack();
		
	}
	
	public void actionPerformed(ActionEvent e)
    {
		Object componente = e.getSource();
        
        if(componente == jmiNuevoEvento)
	  	{
        	try
        	{
        		cargarPanelRegistrarNuevoEvento();
        	}
        	catch(Exception ex)
        	{
        		ex.printStackTrace();
        	}
        	
	  	}
        else if(componente == jmiEliminarUsuario)
	  	{        	
        	try
        	{
        		cargarPanelEliminarUsuario();
        	}
        	catch(Exception ex)
        	{
        		ex.printStackTrace();
        	}
        	
	  	}
        else if(componente == jmiConsultaEvento)
	  	{        	
        	try
        	{
        		cargarPanelConsultarEvento();
        	}
        	catch(Exception ex)
        	{
        		ex.printStackTrace();
        	}
        	
	  	}
        else if(componente == jmiEliminarEvento)
	  	{        	
        	try
        	{
        		cargarPanelEliminarEvento();
        	}
        	catch(Exception ex)
        	{
        		ex.printStackTrace();
        	}
        	
	  	}                      
        else if(componente == jmiCargarEventosXML)
	  	{        	
        	try
        	{
        		this.cargarPanelCargarEventosXML();
        	}
        	catch(Exception ex)
        	{
        		ex.printStackTrace();
        	}
        	
	  	}
    }	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		try {
	        UIManager.setLookAndFeel(
	            UIManager.getSystemLookAndFeelClassName());
	    } catch (Exception e) { }
		
		GUIAdministrador admin = new GUIAdministrador();

	}

}
